export { };
// 类；

class Person {
  public name: string;
  public age: number;
  public sex: boolean;

  // readonly，只读修饰符，如遇到其它的修饰符，则写在其它修饰符的右边
  public readonly money: number = 10000000;

  // 如果把父类的构造器定义未私有的，则会影响子类的继承和new运算符来实例化对象。
  private constructor(name: string, age: number, sex: boolean) {
    this.name = name;
    this.age = age;
    this.sex = sex;
  }

  say() {
    console.log(this.name);

  }

  // 只能定义一个静态的方法，来返回一个Person的实例化对象
  static createPreson(name: string, age: number, sex: boolean) {
    return new Person(name, age, sex)
  }
}


// let p = new Person('张三', 15, true) //private constructor(){}后， 类“Person”的构造函数是私有的，仅可在类声明中访问。

// console.log(p.money); // 10000000
// console.log(p);// Person { money: 10000000, name: '张三', age: 15, sex: true }

// class Student extends Person{//无法扩展类“Person”。类构造函数标记为私有。
// }

let p = Person.createPreson('李四', 23, false)
p.say() //李四